#ifndef __IF_NETIO_API_H__
#define __IF_NETIO_API_H__

#include <assert.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <unistd.h>
#include <netio/netio.h>
#include <tmc/alloc.h>
#include <tmc/cpus.h>
#include <tmc/sync.h>
#include <tmc/task.h>

#define NETIO_FLOWS 256
typedef struct if_netio_instance_t_
{
    netio_queue_t queue;
    unsigned int worker_id;
    unsigned int rx_counter;
    unsigned int tx_counter;
    unsigned int tx_retry_counter;
    unsigned int tx_busy_counter;
    unsigned int tx_err_counter;
} netio_instance_t;

netio_instance_t *if_netio_init(char *ifname, unsigned int worker_id);
void flow_config (netio_instance_t *instance, unsigned int workers);
void if_netio_show_stat(netio_instance_t *instance);

#endif
